package edu.yctc.kc.function;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import edu.yctc.kc.constant.From;
import edu.yctc.kc.constant.Service;
import edu.yctc.kc.constant.To;
import edu.yctc.kc.constant.Type;
import edu.yctc.kc.entity.AirLine;

/**
 * 
 * @className Query
 * @description 软件测试考察第一题
 * @author zyj
 * @date 2019年12月28日
 *
 */
public class Query {

    public static void queryAirLine(AirLine airLine) {
        if (airLine == null) {
            System.out.println("航线为空");
            return;
        } else {
            // 提供的服务
            List<String> services = new ArrayList<String>();
            String from = airLine.getFrom();
            String to = airLine.getTo();
            String type = airLine.getType();
            double duration = airLine.getDuration();
            // 合法性检验
            if (!From.isLegal(from) || !To.isLegal(to) || !Type.isLegal(type) || duration <= 0) {
                System.out.println("参数不合法");
                return;
            }
            // 出发地为中国
            if (from.equals(From.CHINA)) {
                // 飞往欧美
                if (to.equals(To.EURO_AMERICAN)) {
                    // 提供食物, 可以播放电影
                    services.add(Service.FOOD);
                    services.add(Service.MOVIE);
                }
                // 飞往非欧美
                else if (to.equals(To.OTHERS)) {
                    // 都有食物
                    services.add(Service.FOOD);
                    // 如果为商务舱, 可以播放电影
                    if (type.equals(Type.BUSINESS_CLASS)) {
                        services.add(Service.MOVIE);
                    }
                }
                // 飞往国内
                else if (to.equals(To.CHINA)) {
                    // 如果为商务舱, 有食物
                    if (type.equals(Type.BUSINESS_CLASS)) {
                        services.add(Service.FOOD);
                    }
                    // 经济舱
                    else {
                        // 飞行时间大于2小时, 有食物
                        if (duration >= 2) {
                            services.add(Service.FOOD);
                        } else {
                            System.out.println("无供应");
                        }
                    }
                }
                // 其他情况
                else {
                    System.out.println("暂无该种航线");
                }
            }
            // 出发地非中国
            else {
                System.out.println("暂无该种航线");
            }
            Iterator<String> iterator = services.iterator();
            while (iterator.hasNext()) {
                System.out.print(iterator.next() + " ");
            }
        }
    }

}
